package org.alps.pattern.factory.factorymethod;

import org.alps.pattern.factory.ICourse;
import org.slf4j.LoggerFactory;

/**
 * 工厂方法
 * 适用场景：1.创建对象需要大量重复的代码。
 * *       2.客户端（应用层）不依赖于产品类实例如何被创建、实现等细节。
 * *       3.一个类通过其子类来指定创建哪个对象。
 * 优点：1.用户只需要关心所需产品对应的工厂，无需关心创建细节
 * *    2.加入新产品符合开闭原则，提高了系统的可扩展性。
 * 缺点：类的个数容易过多，增加了代码结构的复杂度；增加了系统的抽象性和理解难度；
 * @date 2021-04-26
 * @author zkw
 */
public class FactoryMethodTest {
    public static void main(String[] args) {
        ICourseFactory factory = new PythonCourseFactory();
        ICourse course = factory.create();
        course.record();

        //LoggerFactory.getLogger()
    }
}
